import type { PageParam, PageResult } from '@vben/request';

import { requestClient } from '#/api/request';

export namespace SystemOperateCategoriesApi {
  /** 业务分类信息 */
  export interface OperateCategories {
    id: number; // 业务分类id
    code?: string; // 分类编码
    name?: string; // 分类名称
    parentId?: number; // 父级分类ID
    description: string; // 分类描述
    icon: string; // 图标
    color: string; // 颜色
    status?: number; // 状态
    sort: number; // 排序
    codePath: string; // 分类路径
    path: string; // id路径
    systemFlag: boolean; // 是否系统内置
    menuId: number; // 菜单id
    url: string; // 接口地址
    formId: number; // 表单id
    component: string; // 组件路径
    classPath: string; // 类路径
    method: string; // 请求方法
    operating: string; // 操纵期控制规则
    metadata: string; // 其他参数
    reviewList?: any[]; // 审核节点
    componentName?: string; // 组件名称
  }
}

/** 查询业务分类分页 */
export function getOperateCategoriesPage(
  data: PageParam,
  desensitize: boolean,
  encrypt: boolean,
) {
  return requestClient.post<
    PageResult<SystemOperateCategoriesApi.OperateCategories>
  >('/system/operate-categories/page', data, {
    desensitize,
    encrypt,
  });
}

/** 查询业务分类列表 */
export function getOperateCategoriesList(data: any) {
  return requestClient.post<SystemOperateCategoriesApi.OperateCategories[]>(
    '/system/operate-categories/list',
    data,
  );
}
/** 查询业务分类列表 简单 权限控制 */
export function getOperateCategoriesSimpleList(data?: any) {
  return requestClient.post<SystemOperateCategoriesApi.OperateCategories[]>(
    '/system/operate-categories/list-simple',
    data,
  );
}
/** 查询业务分类详情 */
export function getOperateCategories(id: number) {
  return requestClient.get<SystemOperateCategoriesApi.OperateCategories>(
    `/system/operate-categories/get?id=${id}`,
  );
}

/** 新增业务分类 */
export function createOperateCategories(
  data: SystemOperateCategoriesApi.OperateCategories,
) {
  return requestClient.post('/system/operate-categories/create', data);
}

/** 修改业务分类 */
export function updateOperateCategories(
  data: SystemOperateCategoriesApi.OperateCategories,
) {
  return requestClient.put('/system/operate-categories/update', data);
}

/** 删除业务分类 */
export function deleteOperateCategories(id: number) {
  return requestClient.delete(`/system/operate-categories/delete?id=${id}`);
}

/** 批量删除业务分类 */
export function deleteOperateCategoriesList(ids: number[]) {
  return requestClient.delete(
    `/system/operate-categories/delete-list?ids=${ids.join(',')}`,
  );
}

/** 导出业务分类 */
export function exportOperateCategories(params: any) {
  return requestClient.download('/system/operate-categories/export-excel', {
    params,
  });
}
